<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1、当前作用域存在
        function fn() {
            let a = 20;
            console.log(a);
        }
        fn();
        // 2、当前作用域不存在 上级存在
        function fn2() {
            let n = 20;
            function fn3() {
                console.log(n);
            }
            fn3();
        }
        fn2();
        // 3、当前作用域不存在  上级也不存在  上上级存在
        let nickname = "坤坤";
        function fn4() {

            function fn5() {
                console.log(nickname)
            }
            fn5();
        }
        fn4();
        // 4、所有的作用域都不存在

        function fn6(){
            console.log(sex);
        }
        fn6();
        // 读取规则：就近原则 当前作用域存在就使用 否则就到上级作用域下寻找 如果上级也没找到 继续向上 直到window如果都还没找到 就报错
    </script>
</body>

</html>